package com.dtx.day1.factory;

import com.dtx.day1.utils.PropUtils;

/**
 * 一个Bean工厂，用来生产bean（对象）
 */
public class BeanFactory {

    public static<T> T getBean(String beanKey){
        //根据 beankey 获取的类
        String clazzName = PropUtils.getProperty(beanKey);

        if (clazzName==null) {
            return null;
        }

        // 根据找到的 类的名字 ， 获取类的对象
        try {
            Class<?> clz = Class.forName(clazzName);
            //获取 无参构造，并创建对象
            Object obj = clz.getDeclaredConstructor().newInstance();

            return (T) obj;
        } catch (Exception e) {
            throw new RuntimeException("加载的类不存在，请检查db.properties，或者类中没有无参构造");
        }
    }
}
